import logging
from datetime import timedelta
from redis import Redis


# 将配置信息封装到Config类中  统一管理
class Config:
    DEBUG = True  # 开启调试模式
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/f23v"  # 数据库连接地址
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 是否追踪数据库变化
    REDIS_HOST = "127.0.0.1"  # redis绑定的ip  可以自定义配置key封装到Config类中
    REDIS_PORT = 6379  # redis监听的端口
    SESSION_TYPE = "redis"  # 设置session的存储方式
    SESSION_REDIS = Redis(host=REDIS_HOST, port=REDIS_PORT)  # 设置redis操作对象
    SESSION_USE_SIGNER = True  # 设置sessionid是否加密
    SECRET_KEY = "GRdP75TcqlG7mo0RMEDpZlNKhS+lNxGSxMX29WkDFrZr7cO6lqrFUsj3DPt8TEnb"  # 设置应用秘钥, 对sessionid进行加密
    PERMANENT_SESSION_LIFETIME = timedelta(days=7)  # 设置session过期时间
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True  # 每次请求结束, 会自动提交数据库


# 不同的代码环境应该使用不同的配置信息(配置子类化)
class DevelopmentConfig(Config):  # 开发环境: 项目开发阶段需要的代码环境
    DEBUG = True
    REDIS_HOST = "127.0.0.1"
    LOG_LEVEL = logging.DEBUG


class ProductionConfig(Config):  # 生产环境: 项目上线后需要的代码环境(用户可以外网访问)
    DEBUG = False
    # REDIS_HOST = "222.xx.xx.xx"
    LOG_LEVEL = logging.ERROR  # 日志级别

# 记录配置类型和配置子类的对应关系
config_dict = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig
}